// 此vm参数为页面的实例，可以通过它引用vuex中的变量
import Vue from 'vue'
module.exports = (vm) => {
	// 初始化请求配置
	uni.$u.http.setConfig((config) => {
		/* config 为默认全局配置*/
		console.log(Vue.prototype.$store.state.token, ' Vue.prototype.$store.state.token');
		config.baseURL = 'https://play.bozhoukeji.cn/'; /* 根域名 */
		config.header = {
			'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
			// 'personal-token': Vue.prototype.$store.state.token,
		}

		return config
	})

	// 请求拦截
	uni.$u.http.interceptors.request.use((config) => {
		config.header.personal_token = Vue.prototype.$store.state.member.token
		// config.header.token = Vue.prototype.$store.state.member.token
		config.header = {

			'personal-token': Vue.prototype.$store.state.token,
		}

		config.header.lang = Vue.prototype.$store.state.lang;
		// let platform = 'MP-WEIXIN';

		// config.header.platform = platform;
		// console.log(config, 'config');

		return config
	})

	// 响应拦截
	// uni.$u.http.interceptors.response.use((res) => {
	// 	/* 对响应成功做点什么 可使用async await 做异步操作*/
	// 	const data = res
	// 	console.log(data, 'datahahah');
	// 	// 自定义参数
	// 	if (res.statusCode == 200) {
	// 		// res为服务端返回值，可能有code，result等字段
	// 		// 这里对res.result进行返回，将会在this.$u.post(url).then(res => {})的then回调中的res的到
	// 		// 如果配置了originalData为true，请留意这里的返回值
	// 		if (res.hasOwnProperty('data')) {
	// 			if (res.data.hasOwnProperty('code') && res.data.code == 1) {
	// 				if (res.data.msg != "") {
	// 					uni.$u.toast(res.data.msg)
	// 					// return
	// 				}
	// 				return res.data;
	// 			} else {
	// 				if (res.data.hasOwnProperty('msg')) {
	// 					uni.$u.toast(res.data.msg);
	// 				} else {
	// 					uni.$u.toast('返回参数错误');
	// 				}
	// 				return false;
	// 			}
	// 		} else {
	// 			uni.$u.toast('不能识别数据')

	// 			return false;
	// 		}
	// 	} else if (res.statusCode == 401) {
	// 		// 假设401为token失效，这里跳转登录
	// 		uni.$u.toast('登录过期，请重新登录');
	// 		Vue.prototype.$store.state.commit('SET_MEMBER', {})
	// 		setTimeout(() => {
	// 			// 此为uView的方法，详见路由相关文档
	// 			vm.$u.route('/pages/login/login')
	// 		}, 1500)
	// 		return res.data;
	// 	} else {
	// 		uni.$u.toast('不能识别数据');
	// 		// 如果返回false，则会调用Promise的reject回调，
	// 		// 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中，res为服务端的返回值
	// 		return false;
	// 	}
	// })
	uni.$u.http.interceptors.response.use((res) => {
		/* 对响应成功做点什么 可使用async await 做异步操作*/
		// if (response.data.code !== 200) { // 服务端返回的状态码不等于200，则reject()
		//    	return Promise.reject(response) // return Promise.reject 可使promise状态进入catch
		// if (response.config.custom.verification) { // 演示自定义参数的作用
		//   	return response.data
		// }
		console.log(res, '成功')
		if (res.statusCode == 200) {
			// res为服务端返回值，可能有code，result等字段
			// 这里对res.result进行返回，将会在this.$u.post(url).then(res => {})的then回调中的res的到
			// 如果配置了originalData为true，请留意这里的返回值
			console.log(res.hasOwnProperty('data'));
			if (res.hasOwnProperty('data')) {
				if (res.data.hasOwnProperty('code') && (res.data.code == 1 || res.data.code == 200)) {
					if (res.data.msg != "") {
						// uni.$u.toast(res.data.msg)
						// return
					}
					return res.data;
				}
				if (res.data.title == '用户协议') {
					// uni.$u.toast(res.data.title);
					return res.data;
				} else {
					if (res.data.hasOwnProperty('msg') && res.data.msg == '请先登录') {
						uni.$u.toast(res.data.msg);
						uni.navigateTo({
							url: '/pages/login/login',
						})

					} else {
						uni.$u.toast(res.data.msg);
					}
					return false;
				}
			} else {
				uni.$u.toast('不能识别数据1')

				return false;
			}
		}
		return res
	}, (res1) => {
		/*  对响应错误做点什么 （statusCode !== 200）*/
		console.log(res1, '失败')
		if (res1.statusCode == 401) {
			// 假设401为token失效，这里跳转登录
			uni.$u.toast('请登录后操作');
			console.log(Vue.prototype.$store, 'Vue.prototype.$store');
			Vue.prototype.$store.commit('SET_MEMBER', {})

			setTimeout(() => {
				// 此为uView的方法，详见路由相关文档
				uni.$u.route({
					url: '/pages/login/login',

				})


			}, 1500)
			return res1.data;
		} else {
			uni.$u.toast('不能识别数据2');
			// 如果返回false，则会调用Promise的reject回调，
			// 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中，res为服务端的返回值
			return false;
		}
		return Promise.reject(res)
	})




}